package com.sunshine.lnuplusweb.service.Impl;

import com.sunshine.lnuplusweb.dao.UserConfigMapper;
import com.sunshine.lnuplusweb.dao.UserMapper;
import com.sunshine.lnuplusweb.entities.UserConfig;
import com.sunshine.lnuplusweb.service.UserConfigService;
import com.sunshine.lnuplusweb.utils.CryptoUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserConfigServiceImpl implements UserConfigService {
    @Resource
    private UserConfigMapper userConfigMapper;

    @Resource
    private UserMapper userMapper;

    /**
     * 添加默认方法
     * @param userId    用户id
     */
    @Override
    public void addDefaultConfig(String userId) {
        userConfigMapper.insertDefault(CryptoUtils.encrypByMD5(userId));
    }

    /**
     * 添加一个配置，好像用不上
     * @param userConfig    用户配置
     */
    @Override
    public void addConfig(UserConfig userConfig) {
        userConfigMapper.insert(
                CryptoUtils.encrypByMD5(userConfig.getUserId()),
                userConfig.getNowScheduleId(),
                userConfig.getWeekCount(),
                userConfig.getHeight(),
                userConfig.getTextSize(),
                userConfig.getTextColor(),
                userConfig.getRound(),
                userConfig.isShowTeacher(),
                userConfig.getAlpha(),
                userConfig.getDateColor(),
                userConfig.isTextLeft()
        );
    }

    /**
     * 获取指定用户的课表id
     * @param userId        用户id
     * @return -1 空  -2 不存在该用户
     */
    @Override
    public int getNowScheduleId(String userId) {
        int userCount = userMapper.getUserCountById(CryptoUtils.encrypByMD5(userId));
        //没有这个用户不必搜索了，直接返回代表用户不存在
        if (userCount <= 0) return -2;
        else return userConfigMapper.selectScheduleIdByUserId(CryptoUtils.encrypByMD5(userId));
    }

    /**
     * 获取一个用户的用户配置
     * @param userId
     * @return
     */
    @Override
    public UserConfig getUserConfig(String userId) {
        return userConfigMapper.selectByUserId(CryptoUtils.encrypByMD5(userId));
    }

    /**
     * 更新用户当前课表
     * @param userId
     * @return
     */
    @Override
    public void updateScheduleId(String userId, int scheduleId) {
        userConfigMapper.updateScheduleId(CryptoUtils.encrypByMD5(userId), scheduleId);
    }

    /**
     * 更改用户配置
     * @param userConfig
     */
    @Override
    public void updateUserConfig(UserConfig userConfig) {
        userConfigMapper.updateUserConfig(
                CryptoUtils.encrypByMD5(userConfig.getUserId()),
                userConfig.getWeekCount(),
                userConfig.getHeight(),
                userConfig.getTextSize(),
                userConfig.getTextColor(),
                userConfig.getRound(),
                userConfig.isShowTeacher(),
                userConfig.getAlpha(),
                userConfig.getDateColor(),
                userConfig.isTextLeft()
        );
    }
}
